<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>运算符</title>
    <script>
        /*
            运算符也叫操作符
                通过运算符可以对一个或多个值进行运算，并获取运算结果
                比如:typeof就是运算符，可以来获得一个值的类型
                    它会将该值的类型以字符串的形式返回
                    number string boolean undefined object

                算术运算符
                    当对非Number类型的值进行运算时，会将这些值转换为Number然后在运算任何值和NaN做运算都得NaN

                    +
                        +可以对两个值进行加法运算，并将结果返回
                        如果对两个字符串进行加法运算，则会做拼串，会将两个字符串拼接为一个字符串并返回
                        任何的值和字符串做加法运算，都会先转换为字符串，然后再和字符串做拼串的操作

                    -
                        -可以对两个值进行减法运算，并将结果返回

                    *
                        *可以对两个值进行乘法运算

                    /
                        /可以对两个值进行除法运算

                    %
                        %取模运算(取余数)
        */

        var a = 123;
        var result = typeof a;
        console.log(typeof result);

        result = a + 1;
        result = 456 + 789;
        result = true + 1;
        result = true + false;
        result = 2 + null;
        result = 2 + NaN;
        result = "你好" + "大帅哥";
        var str = "锄禾日当午，"+
                    "汗滴禾下土，"+
                    "谁知盘中餐，"+
                    "粒粒皆辛苦。";
        console.log(str);

        result = 123 + '1';
        result = true + "hello"

        // 任何值和字符串相加都会转换为字符串，并做拼串操作
        /*
            我们可以利用这个特点，来将一个任意的数据类型转换为String
                我们只需要为任意的数据类型 + 一个""即可将其转换为String
                这是一种隐式的类型转换，由浏览器自动完成，实际上它也是调用String()函数
        */
        var c = 123;
        c = c + "";
        console.log(typeof c);
        console.log(c);


        result = 1 + 2 + "3";//33
        result = "1"+ 2 + 3;//123
        result = 100 - 5;
        result = 100 - true;
        result = 100 - "1";
        result = 2 * 2;
        result = 2 * "8";
        result = 2 * undefined;
        result = 2 * null;
        result = 4/2;
        /*
            任何值做- * / 都会自动转换为Number
            我们可以利用这一特点来做隐式的类型转化
                可以通过为一个值 -0 *1 /1 来将其转换为Number
                原理和Number()函数一样，使用起来更加简单
        */
        console.log(result);
    </script>
</head>
<body>
    
</body>
</html>